/*
 * main.c
 *
 *  Created on: 16/12/2011
 *      Author: marciocs5
 */

#include <stdlib.h>
#include <time.h>
#include <sys/resource.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "../graph/graph.h"
#include "../solver/formulation.h"
#include "../solver/solver.h"


int main(int argc, char** argv){
	int i;

	printf("Programa para Problema de k-coloração de Vértices \n");
	if(argc < 3){
		printf("Numero Inválido de argumentos \n");
	}
	FILE* graphFile = fopen(argv[1], "r");
	FILE* colorFile = fopen(argv[2], "r");
	if (graphFile == NULL || colorFile == NULL) {
		printf("Could not open %s.\n", argv[1]);
		return 0;
	}
	int code = loadSharedGraph(graphFile, GT_GRAPH);
	fclose(graphFile);
	setAdjMatrix(getSharedGraph());


	printf("Li o grafo sem problemas \n");
	printf("Li a coloração inicial sem problemas \n");


	//medição do tempo
	struct timespec start, end;
	double elapsed;
    struct timeval tv;
    gettimeofday(&tv, NULL);
    start.tv_sec = tv.tv_sec;
    start.tv_nsec = tv.tv_usec * 1000;

    //cria a formulação
    createFormulation();

    //resolve a formulação
    double sol =  solve();

	gettimeofday(&tv, NULL);
	end.tv_sec = tv.tv_sec;
	end.tv_nsec = tv.tv_usec * 1000;

	elapsed = (end.tv_sec - start.tv_sec);
	elapsed += (end.tv_nsec - start.tv_nsec) / 1000000000.0;
	printf("Tempo Gasto: %8.5g secundos(s).\n", elapsed);
	printf("Solução encontrada = %f \n", sol);
    //imprimi para chegagem a formulação
	printFormulation();
	releaseSharedGraph(code);
	freeAdjMatrix();
	return 0;
}

